const api = require('../../utils/api');
const utils = require('../../utils/index');

Page({
  data: {
    bookingList: [],
    page: 1,
    pageSize: 10,
    hasMore: true,
    loading: false,
    isLoggedIn: false
  },

  onLoad: function() {
    // 检查登录状态
    const app = getApp();
    const userManager = require('../../utils/userManager');
    
    // 使用本地存储判断是否登录，更可靠
    const isLoggedIn = userManager.isLoggedIn();
    console.log('续单页面登录状态:', isLoggedIn, '全局状态:', app.globalData.isLoggedIn);
    
    this.setData({
      isLoggedIn: isLoggedIn
    });

    if (isLoggedIn) {
      // 加载可续单的订单列表（状态为已确认和已完成的订单）
      this.resetAndLoadBookingList();
    }
  },

  onShow: function() {
    // 检查登录状态是否发生变化
    const app = getApp();
    const userManager = require('../../utils/userManager');
    const isLoggedIn = userManager.isLoggedIn();
    
    if (isLoggedIn !== this.data.isLoggedIn) {
      console.log('续单页面登录状态已变更:', isLoggedIn);
      this.setData({
        isLoggedIn: isLoggedIn
      });
      if (isLoggedIn) {
        this.resetAndLoadBookingList();
      }
    }
  },

  // 重置并加载订单列表
  resetAndLoadBookingList: function() {
    // 重置分页数据
    this.setData({
      page: 1,
      hasMore: true,
      bookingList: []
    });
    
    // 加载数据
    return this.loadBookingList();
  },

  // 加载订单列表
  loadBookingList: function() {
    const that = this;
    
    // 如果正在加载或没有更多数据，则不执行
    if (this.data.loading || !this.data.hasMore) {
      return Promise.resolve();
    }
    
    // 显示加载状态
    this.setData({
      loading: true
    });
    
    // 定义请求参数
    const params = {
      page: this.data.page,
      page_size: this.data.pageSize
    };
    
    // 发起请求
    return new Promise((resolve, reject) => {
      api.order.getRenewableList(params).then(res => {
        if (res.success) {
          // 处理返回数据
          const newList = res.data.list || [];
          const formattedList = newList.map(item => {
            // 格式化时间和日期
            const startTime = item.start_time ? new Date(item.start_time * 1000) : null;
            const endTime = item.end_time ? new Date(item.end_time * 1000) : null;
            const createdTime = item.created_at ? new Date(item.created_at * 1000) : null;
            
            let date = '';
            let time_range = '';
            let created_at_fmt = '';
            
            if (startTime) {
              date = utils.formatDate(startTime);
              time_range = `${utils.formatTime(startTime)} - ${endTime ? utils.formatTime(endTime) : ''}`;
            }
            
            if (createdTime) {
              created_at_fmt = utils.formatDateTime(createdTime);
            }
            
            return {
              ...item,
              id: item.id,
              date: date,
              time_range: time_range,
              created_at_fmt: created_at_fmt,
              status: item.status,
              status_text: that.getStatusText(item.status),
              total_amount: item.total_amount || 0,
              createTime: utils.formatTimestampWithTime(item.created_at || item.create_time)
            };
          });
          
          // 更新列表和分页数据
          const currentList = that.data.bookingList || [];
          const updatedList = currentList.concat(formattedList);
          
          that.setData({
            bookingList: updatedList,
            page: that.data.page + 1,
            hasMore: formattedList.length >= that.data.pageSize,
            loading: false
          });
          
          console.log('加载订单列表成功：', updatedList);
          resolve();
        } else {
          that.setData({
            loading: false
          });
          wx.showToast({
            title: res.message || '加载失败',
            icon: 'none'
          });
          console.error('加载订单列表失败：', res);
          reject(new Error(res.message || '加载失败'));
        }
      }).catch(err => {
        that.setData({
          loading: false
        });
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        });
        console.error('加载订单列表网络错误：', err);
        reject(err);
      });
    });
  },

  // 获取订单状态文本
  getStatusText: function(status) {
    const statusMap = {
      1: '待支付',
      2: '已确认',
      3: '已完成',
      4: '已取消'
    };
    return statusMap[status] || '未知状态';
  },

  // 返回上一页
  onTapBack: function() {
    wx.navigateBack();
  },

  // 续订订单
  onTapRenewBooking: function(e) {
    const booking = e.currentTarget.dataset.booking;
    if (!booking) {
      wx.showToast({
        title: '订单信息有误',
        icon: 'none'
      });
      return;
    }

    console.log('准备续订订单:', booking);

    // 构建URL参数
    const params = {
      venueId: booking.venue_id,
      roomId: booking.room_id || 0,
      roomName: booking.venue_name || '',
      isRenew: true,
      originalBookingId: booking.id
    };

    // 拼接URL查询字符串
    const queryString = Object.keys(params)
      .map(key => `${key}=${encodeURIComponent(params[key])}`)
      .join('&');

    // 跳转到时间段选择页面，带上原订单信息
    wx.navigateTo({
      url: `/pages/venue/timeslot?${queryString}`,
      success: () => {
        console.log('成功跳转到时间选择页面');
      },
      fail: (err) => {
        console.error('跳转失败:', err);
        wx.showToast({
          title: '跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 前往登录
  onTapLogin: function() {
    wx.navigateTo({
      url: '/pages/user/login'
    });
  },

  // 下拉刷新
  onPullDownRefresh: function() {
    this.resetAndLoadBookingList().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 上拉加载更多
  onReachBottom: function() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadBookingList();
    }
  }
}); 